/**
 * 自动添加分号
 */

const babel = require('@babel/core');
const parser = require('@babel/parser');
const traverse = require('@babel/traverse').default;
const generate = require('@babel/generator').default;

// 要转换的代码
const code = `
const a = 1
const b = 2
console.log(a + b)
`;

// 解析代码为 AST
const ast = parser.parse(code);

// 定义 visitor 对象
const visitor = {
    ExpressionStatement(path) {
        if (path.node.trailingComments) return; // 已有分号
        path.node.trailingComments = [{ type: 'CommentBlock', value: ' ' }];
    }
};

// 遍历 AST
traverse(ast, visitor);

// 将修改后的 AST 转换回代码
const { code: transformedCode } = generate(ast, { retainLines: true });

// 输出转换后的代码
console.log(transformedCode);
// 输出
// const a = 1;
// const b = 2;
// console.log(a + b);